//package com.xls.commonlibrary.ad.sigmob.ads;
//
//import android.graphics.Point;
//import android.util.Log;
//import android.webkit.ValueCallback;
//import android.widget.FrameLayout;
//
//import androidx.appcompat.app.AppCompatActivity;
//import androidx.lifecycle.DefaultLifecycleObserver;
//import androidx.lifecycle.LifecycleOwner;
//
//import com.orhanobut.logger.Logger;
//import com.windmill.sdk.WindMillError;
//import com.windmill.sdk.banner.WMBannerAdListener;
//import com.windmill.sdk.banner.WMBannerAdRequest;
//import com.windmill.sdk.banner.WMBannerView;
//import com.windmill.sdk.models.AdInfo;
//
//import java.util.HashMap;
//import java.util.Map;
//
//import io.reactivex.rxjava3.annotations.NonNull;
//
//public class SigmobBannerUtil {
//
////    private String posId = "9093517612222759"; //  demo id
//
//    private String placementId = "4888144329459533"; // 正式 id
//    private String userID = "123456789";
//    private String TAG = "SigmobBannerUtil";
//
//    private static volatile SigmobBannerUtil singleton = null;
//
//    private SigmobBannerUtil() {
//    }
//
//    public static SigmobBannerUtil getInstance() {
//        if (singleton == null) {
//            synchronized (SigmobBannerUtil.class) {
//                if (singleton == null) {
//                    singleton = new SigmobBannerUtil();
//                }
//            }
//        }
//        return singleton;
//    }
//
//
//    AppCompatActivity activity;
//    ValueCallback<Boolean> valueCallback;
//
//    public void loadBanner(@NonNull AppCompatActivity activity,
//                           @NonNull FrameLayout container,
//                           @NonNull ValueCallback<Boolean> valueCallback
//    ) {
//
//        this.activity = activity;
//        this.valueCallback = valueCallback;
//
//        this.mContainer = container;
//
//        addLifecycle();
//
//
//        loadAd();
//    }
//
//    private void callbackSuccess() {
//        if (this.valueCallback == null) return;
//        this.valueCallback.onReceiveValue(true);
//    }
//
//    private void callbackFail() {
//        if (this.valueCallback == null) return;
//        this.valueCallback.onReceiveValue(false);
//    }
//
//
//    private void addLifecycle() {// 重要
//        if (this.activity == null) return;
//
//        this.activity.getLifecycle().addObserver(new DefaultLifecycleObserver() {
//            // 还有很多生命周期都可以感知
//            // 这里只关注 onDestroy()的注销ad对象
//            @Override
//            public void onDestroy(LifecycleOwner owner) {
//                DefaultLifecycleObserver.super.onDestroy(owner);
////                Logger.d("===========LifecycleOwner=========onDestroy===========");
//
//
//                /** 6、在onDestroy中销毁广告 */
//                if (mBannerView != null) {
//                    mBannerView.destroy();
//                    mBannerView = null;
//                }
//
//            }
//        });
//    }
//
//
//    /////////////////////////////////   以下SDK代码   ////////////////////////////////////////////
//
//
//    private FrameLayout mContainer;
//
//    private WMBannerView mBannerView;
//
//    int heightOfBannerDP = 80;// banner's高度 单位：dp
//
//
//    private int dp2px(int dpValue) {
//        return (int) this.activity.getResources().getDisplayMetrics().density * dpValue;
//    }
//
//    //  很重要  banner add ui适配 必备方法
//    private FrameLayout.LayoutParams getUnifiedBannerLayoutParams() {
//        //    推荐您将 Banner 的宽高比固定为 6.4:1 以获得最佳的广告展示效果
//        float scale = 6.4F;
//        Point screenSize = new Point();
//        this.activity.getWindowManager().getDefaultDisplay().getSize(screenSize);
////        return new FrameLayout.LayoutParams(screenSize.x, Math.round(screenSize.x / scale));
//
//        // 169
//        // 319
//        // int h = Math.round(screenSize.x / scale * 3 / 2);
//
//        // dp 适配各种手机的高度
//        int h = dp2px(heightOfBannerDP);
//        Logger.d("============getUnifiedBannerLayoutParams================h:" + h);
//        return new FrameLayout.LayoutParams(screenSize.x, h);
//    }
//
//    private void showAd() {
//        /**
//         * 广告是否有效
//         */
//        boolean ready = mBannerView.isReady();
//        Log.d("lance", "------Ad is Ready------" + ready);
//        if (mBannerView != null && ready) {
//            //媒体最终将要展示广告的容器
//            if (mContainer != null) {
//                mContainer.removeAllViews();
//                mContainer.addView(mBannerView, getUnifiedBannerLayoutParams());
//            }
//        }
//    }
//
//
//    private void loadAd() {
//        Map<String, Object> options = new HashMap<>();
//        options.put("user_id", String.valueOf(userID));
//        mBannerView = new WMBannerView(activity);
//        mBannerView.setAdListener(new WMBannerAdListener() {
//            @Override
//            public void onAdLoadSuccess(String placementId) {
//                Log.d("lance", "------onAdLoadSuccess------" + placementId);
//
//                showAd();
//            }
//
//            @Override
//            public void onAdLoadError(WindMillError error, String placementId) {
//                Log.d("lance", "---banner---onAdLoadError------" + error.toString() + ":" + placementId);
//
//                callbackFail();
//            }
//
//            @Override
//            public void onAdShown(AdInfo adInfo) {
//                Log.d("lance", "------onAdShown------" + adInfo.getPlacementId());
//            }
//
//            @Override
//            public void onAdClicked(AdInfo adInfo) {
//                Log.d("lance", "------onAdClicked------" + adInfo.getPlacementId());
//            }
//
//            @Override
//            public void onAdClosed(AdInfo adInfo) {
//                Log.d("lance", "------onAdClosed------" + adInfo.getPlacementId());
//
//                if (mContainer != null) {
//                    mContainer.removeAllViews();
//                }
//
//                callbackSuccess();
//            }
//
//            @Override
//            public void onAdAutoRefreshed(AdInfo adInfo) {
//                Log.d("lance", "------onAdAutoRefreshed------" + adInfo.getPlacementId());
//            }
//
//            @Override
//            public void onAdAutoRefreshFail(WindMillError error, String placementId) {
//                Log.d("lance", "------onAdAutoRefreshFail------" + error.toString() + ":" + placementId);
//
//
//            }
//        });
//
//        mBannerView.setAutoAnimation(true);
//        mBannerView.loadAd(new WMBannerAdRequest(placementId, userID, options));
//    }
//
//
//}
